﻿#ifndef MSGDIALOG_H
#define MSGDIALOG_H

#include <QDialog>
#include <QWidget>
#include <QString>
#include <QColor>
#include <QTimer>
#include <QIcon>
#include <QBoxLayout>
#include <QLabel>

class MsgDialog : public QDialog {
    Q_OBJECT

public:
    enum IconPosition {
        IconLeft,   // 图标在左侧
        IconRight,  // 图标在右侧
        IconTop,    // 图标在顶部
        IconBottom  // 图标在底部
    };

    explicit MsgDialog(QWidget *parent = nullptr);

    void setTitle(const QString &title);
    void setContent(const QString &content);
    void setBackgroundColor(const QColor &color);
    void setBackgroundOpacity(float opacity);
    void setFontColor(const QColor &color);
    void setFontSize(int size);
    void setCornerRadius(int radius);
    void setBorderTransparent(bool transparent);
    void setAutoCloseTimeout(int milliseconds); // 设置自动关闭时间
    void setIcon(const QIcon &icon); // 设置自定义图标
    void setIconPosition(IconPosition position); // 设置图标显示位置

protected:
    void paintEvent(QPaintEvent *event) override;

private slots:
    void closeDialog(); // 自动关闭对话框

private:
    void updateLayout(); // 更新布局

    QString title;
    QString content;
    QColor backgroundColor;
    float backgroundOpacity;
    QColor fontColor;
    int fontSize;
    int cornerRadius;
    bool borderTransparent;
    QTimer *closeTimer; // 定时器用于自动关闭
    QIcon icon; // 自定义图标
    IconPosition iconPosition; // 图标显示位置
    QLabel *iconLabel; // 图标标签
    QLabel *titleLabel; // 标题标签
    QLabel *contentLabel; // 内容标签
    QVBoxLayout *mainLayout; // 主布局
};

#endif // MSGDIALOG_H
